导航菜单

图片/文件上传

图片/文件上传

数据表单通过以下的调用来生成图片/文件上传表单,支持本地和云存储的文件上传。上传组件是基于webuploader实现的,具体的使用配置可参考webuploader官方文档。

{tip} 文件或图片上传表单字段请不要在模型中设置访问器和修改器拼接域名,如有相关需求可参考文件/图片域名拼接。

$form->file('file_column');$form->image('image_column');

本地上传

先添加存储配置,config/filesystems.php 添加一项disk:

'disks' => [... ,'admin' => ['driver' => 'local','root' => public_path('uploads'),'visibility' => 'public','url' => env('APP_URL').'/uploads',],],

设置上传的路径为public/uploads(public_path('uploads'))。

然后选择上传的disk,打开config/admin.php找到:

'upload' => ['disk' => 'admin','directory' => ['image' => 'images','file'=> 'files',]],

将disk设置为上面添加的admin,directory.image和directory.file分别为用$form->image($column)和$form->file($column)上传的图片和文件的上传目录。

当然你也可以在代码中指定disk:

$form->file('file')->disk('your disk name');

云盘上传

如果需要上传到云存储,需要安装对应laravel storage的适配器,拿七牛云存储举例

首先安装 zgldh/qiniu-laravel-storage

同样配置好disk,在config/filesystems.php 添加一项:

'disks' => [... ,'qiniu' => ['driver' => 'qiniu','domains' => ['default'=> 'xxxxx.com1.z0.glb.clouddn.com', //你的七牛域名'https' => 'dn-yourdomain.qbox.me', //你的HTTPS域名'custom'=> 'static.abc.com',//你的自定义域名 ],'access_key'=> '', //AccessKey'secret_key'=> '', //SecretKey'bucket'=> '', //Bucket名字'notify_url'=> '', //持久化处理回调地址'url'=> 'http://of8kfibjo.bkt.clouddn.com/', // 填写文件访问根url],],

然后修改dcat-admin的上传配置,打开config/admin.php找到:

'upload' => ['disk' => 'qiniu','directory' => ['image' => 'image','file'=> 'file',],],

disk选择上面配置的qiniu,或:

$form->file('file')->disk('qiniu');

公共方法

存储驱动 (disk)

修改文件上传源

$form->file('file')->disk('your disk name');

上传路径 (move)

修改上传路径

$form->file('file')->move('public/upload/image1/');

文件名称 (name)

修改上传文件名称

$form->file('file')->name('test.text');$form->image('picture')->name(function ($file) {return 'test.'.$file->guessExtension();});

随机名称 (uniqueName)

使用随机生成文件名 (md5(uniqid()).extension)

$form->image('picture')->uniqueName();

禁止页面删除文件 (替换上传)

通过removeable方法可以禁止用户从页面点击删除服务器上的文件,可以实现图片覆盖上传效果。

$form->file($column[, $label])->removeable(false);

自动上传 (autoUpload)

开启这个功能之后选择完文件之后会立即自动上传,页面将不再显示上传按钮,使用方法如下

$form->file('file')->autoUpload();$form->image('img')->autoUpload();

禁止删除 (retainable)

开启这个功能之后文件将不会从服务器删除

$form->file('file')->retainable();$form->image('img')->retainable();

storagePermission

设置上传文件的权限

$form->image('picture')->storagePermission(777);

限制上传文件类型

限制上传文件的类型

$form->file('file')->accept('jpg,png,gif,jpeg');// 可以指定 mimeTypes, 多个用逗号分割$form->file('file')->accept('jpg,png,gif,jpeg', 'image/*');

分块上传 (chunked)

启用分块上传

$form->file('file')->chunked();

分块大小(chunkSize)

设置分块大小,单位为KB,默认5MB

{tip} 调用这个方法会自动启用分块上传

// 设置为 1MB$form->file('file')->chunkSize(1024);

文件大小(maxSize)

设置单个文件最大大小,单位为Kb,默认大小为10M。

{tip} 同时应该保证php.ini配置文件的upload_max_filesize参数值必须大于这个方法设置的值。

// 设置单个文件最大为1Mb$form->file('file')->maxSize(1024);

并发上传线程数 (threads)

设置并发上传线程数,默认3

$form->file('file')->threads(5);

自定义上传接口 (url)

通过url可以设置自定义上传接口

$form->file('file')->url('users/files');

系统提供了Dcat\Admin\Traits\HasUploadedFile这个trait来帮助开发者更轻松地处理上传文件,用法如下

相关推荐: